[1]:
import sys

sys.path.append('../src')

Constraint optimization#

[2]:
# import libraries
import jax.numpy as jnp
from optymus import Optimizer
[3]:
def f(x):
    return x[0]**2 + x[1]**2

def constraint1(x):
    return x[0] + x[1] - 1

def constraint2(x):
    return x[0] - x[1]

def constraint3(x):
    return x[1] - 0.5
[4]:
initial_guess = jnp.array([0.0, 5.0])
cons_list = [constraint1, constraint2, constraint3]

opt = Optimizer(f, cons_list, initial_guess, method='newton_raphson')
Newton-Raphson 0:   2%|▏         | 2/100 [00:02<02:09,  1.33s/it]
[5]:
opt.print_report()
[5]:
Method Initial Guess Optimal Solution Objective Function Value Number of Iterations Time Elapsed
Optimization Results newton_raphson [0.0, 5.0] [-2.220446049250313e-16, -1.1102230246251565e-16] 6.162975822039155e-32 2 2.656502
[6]:
opt.plot_results(show=True, notebook=True)